package router

import (
	"myapi/router/middleware" // 导入middleware包，用于使用中间件功能
	"myapi/service"           // 导入service包，用于处理具体的业务逻辑
	"net/http"

	"github.com/gin-gonic/gin" // 导入gin框架包
)

// 初始化路由
func InitRouter(g *gin.Engine) {
	middlewares := []gin.HandlerFunc{} // 初始化一个空的中间件函数切片，用于存储函数

	// 使用中间件
	g.Use(gin.Recovery())     // 使用gin的Recovery中间件，可捕获任何panic并返回500
	g.Use(middleware.NoCache) // 使用自定义的NoCache中间件，设置响应头防止缓存
	g.Use(middleware.Options) // 使用自定义的Options中间件，处理OPTIONS请求
	g.Use(middleware.Secure)  // 使用自定义的Secure中间件，增强API的安全性
	g.Use(middlewares...)     // 应用初始化的中间件切片

	// 404处理
	g.NoRoute(func(c *gin.Context) { // 为未找到的路由设置处理函数
		c.String(http.StatusNotFound, "The incorrect API route.") // 返回404状态码和消息
	})

	// 健康检查处理器
	router := g.Group("/user") // 创建以"/user"为前缀的路由组
	{
		router.POST("/addUser", service.AddUser)       // 添加用户的路由，绑定AddUser处理函数
		router.POST("/selectUser", service.SelectUser) // 查询用户的路由，绑定SelectUser处理函数
		router.GET("", service.UserIndex)
	}
}
